সেশন কি এবং কিভাবে কাজ করে?

Web Development - এএসপি ডট (ASP.Net) - সেশন এবং কুকিজ ব্যবস্থাপনা |

সেশন (Session) হলো একটি টেম্পোরারি ডেটা স্টোরেজ যা ব্যবহারকারীর ব্রাউজার এবং সার্ভারের মধ্যে তথ্য সংরক্ষণ করতে ব্যবহৃত হয়। এটি সাধারণত ব্যবহারকারীর নির্দিষ্ট সেশন এর মধ্যে থাকা ডেটা সংরক্ষণ এবং অ্যাক্সেস করার জন্য ব্যবহৃত হয়, যেমন লগইন তথ্য, ব্যবহারকারীর পছন্দসমূহ বা অন্য কোনো ব্যক্তিগত তথ্য। সেশন ব্যবহারকারীকে বিভিন্ন পেজের মধ্যে ডেটা শেয়ার করার সুবিধা দেয়, যেহেতু HTTP একটি স্টেটলেস প্রোটোকল, অর্থাৎ প্রতিটি রিকোয়েস্টের পরিমাণ একে অপরের থেকে আলাদা।

ASP.Net এ সেশন হ্যান্ডল করার জন্য Session State ব্যবহৃত হয়। এটি একধরনের ইন-মেমরি স্টোরেজ যেখানে ব্যবহারকারীের ডেটা রাখা হয় এবং সার্ভারের মধ্যে সংরক্ষিত থাকে যতক্ষণ না পর্যন্ত ব্যবহারকারীর ব্রাউজার বন্ধ হয় বা সেশন এক্সপায়ার হয়।


সেশন কিভাবে কাজ করে?

ASP.Net এ সেশন পরিচালনার জন্য সার্ভার একটি ইউনিক সেশন আইডি তৈরি করে, যেটি ব্যবহারকারীর ব্রাউজারে একটি cookie হিসেবে সংরক্ষিত হয়। এই সেশন আইডি ব্যবহার করে সার্ভার প্রতিটি রিকোয়েস্টের সাথে সেশন ডেটা সম্পর্কিত তথ্য খুঁজে পায় এবং সে অনুযায়ী রেসপন্স দেয়।

  1. সেশন আইডি সৃষ্টি: যখন একটি ব্যবহারকারী প্রথমবার ওয়েবসাইটে প্রবেশ করে, সার্ভার একটি ইউনিক সেশন আইডি তৈরি করে এবং এটি ব্রাউজারে একটি cookie হিসেবে সেভ করে।
  2. সেশন ডেটা স্টোরেজ: ব্যবহারকারী যে ডেটা জমা দেয় (যেমন লগইন ডেটা), তা সার্ভারের মধ্যে সেশন ভেরিয়েবলের মাধ্যমে সংরক্ষিত হয়।
  3. সেশন আইডি প্রেরণ: প্রতিটি পরবর্তী রিকোয়েস্টের সময় ব্রাউজার স্বয়ংক্রিয়ভাবে এই সেশন আইডি পাঠায় যাতে সার্ভার ওই সেশন আইডির সাথে সম্পর্কিত ডেটা খুঁজে পায়।
  4. সেশন এক্সপায়ার বা বন্ধ: ব্যবহারকারী যখন সার্ভার থেকে লগ আউট করে বা কিছু সময় পর সেশন টাইমআউট হয়, তখন সেশন ডেটা মুছে ফেলা হয়।

ASP.Net এ সেশন ব্যবহার করার উদাহরণ

১. সেশন ডেটা সংরক্ষণ করা

আপনি সেশন ডেটা সংরক্ষণ করতে পারেন Session অবজেক্ট ব্যবহার করে।

public IActionResult Login(string username, string password)
{
    // সঠিক লগইন যাচাই করা
    if (username == "admin" && password == "password")
    {
        // সেশন ডেটা সেট করা
        Session["User"] = username;
        return RedirectToAction("Dashboard");
    }
    else
    {
        return View();
    }
}

২. সেশন ডেটা রিটার্ন করা

সেশন থেকে ডেটা রিট্রিভ করতে, আপনি সেশন অবজেক্টের মাধ্যমে সেভ করা ডেটা অ্যাক্সেস করতে পারেন।

public IActionResult Dashboard()
{
    // সেশন থেকে ব্যবহারকারীর নাম রিটার্ন করা
    var username = Session["User"] as string;
    if (username != null)
    {
        ViewBag.Message = "Welcome, " + username;
        return View();
    }
    else
    {
        return RedirectToAction("Login");
    }
}

৩. সেশন ডেটা মুছে ফেলা

সেশন ডেটা মুছতে Session.Remove() অথবা Session.Abandon() ব্যবহার করা যেতে পারে।

  • Session.Remove(): নির্দিষ্ট একটি সেশন ভেরিয়েবল মুছে ফেলে।
  • Session.Abandon(): পুরো সেশন ডেটা মুছে ফেলে এবং সেশন আইডি রিসেট করে।
public IActionResult Logout()
{
    // সেশন ভেরিয়েবল মুছে ফেলা
    Session.Remove("User");
    return RedirectToAction("Login");
}

সেশন ম্যানেজমেন্টের কিছু গুরুত্বপূর্ণ পয়েন্ট

  1. সেশন টাইমআউট: সেশন ডেটা স্বয়ংক্রিয়ভাবে কিছু সময় পর মুছে যায়। আপনি web.config ফাইলে সেশন টাইমআউট কনফিগার করতে পারেন।

    উদাহরণ:

    <configuration>
      <system.web>
        <sessionState timeout="30" />  <!-- সেশন 30 মিনিট পর এক্সপায়ার হবে -->
      </system.web>
    </configuration>
    
  2. সেশন ভেরিয়েবলদের ডাটা টিপ: সেশন ডেটা সাধারণত যেকোনো টাইপের হতে পারে (string, int, custom objects ইত্যাদি), তবে ডেটা খুব বেশি বড় বা জটিল না রাখাই ভালো।
  3. কুকি এবং সেশন সম্পর্ক: সেশন আইডি কুকি হিসেবে ব্রাউজারে রাখা হয়। ব্রাউজারের কুকি বন্ধ করা হলে সেশন ভ্যালিডিটি নষ্ট হয়ে যাবে।
  4. সেশন শেয়ারিং: যদি একাধিক সার্ভার ব্যবহার করা হয় (যেমন ক্লাস্টারড সার্ভার), তাহলে সেশন ডেটা শেয়ার করার জন্য State Server বা SQL Server ব্যবহার করতে হবে।

সারাংশ

ASP.Net সেশন ব্যবস্থাপনা একটি শক্তিশালী উপায় যা ব্যবহারকারীর ডেটা সার্ভারের মধ্যে সংরক্ষণ করে এবং প্রতিটি HTTP রিকোয়েস্টের সাথে সেই ডেটা অ্যাক্সেস করার সুবিধা দেয়। সেশন ব্যবহারের মাধ্যমে ব্যবহারকারীর ইনফরমেশন একাধিক পেজে বা রিকোয়েস্টে শেয়ার করা যায়। তবে, সেশন ব্যবহারের সময় নিরাপত্তা এবং পারফরমেন্সের বিষয়গুলো খেয়াল রাখতে হয়।

Content added By
Promotion